<?php
/**
  @author:猪也知道
  @describe:面向对象写留言本1.0
  @date:2011/01/18
 * */
/**
 * 控制器，负责调用所有对象来参与留言的流程
 * $name :留言者
 * message():留言动作
 */
class authorControl{
    private $name;
    public function  setName($name){
        $this->name=$name;
    }
    public function message(leaveModel $l,gbookModel $g,$data){
        //人用笔在留言本上留言
        $l->write($g, $data.'-by-'.$this->name);
    }
    public function view(gbookModel $g){
        //查看留言本内容
        return $g->read();
    }
}
/**
 * 留言模型：负责写入留言数据
 */
class leaveModel{
    public function write(gbookModel $gb,$data){
        $book=$gb->getBookPath();
        file_put_contents($book, $data);
    }
}
/**
 * 留言本模型，负责管理留言本
 * $bookPath:留言本属性
 */
class gbookModel{
    private $bookPath;
    public function  setBookPath($bookPath){    
            $this->bookPath=$bookPath;
    }
    
    public  function getBookPath(){
        return $this->bookPath;
    }
    public function open(){
       
    }

    public function  close(){
      
    }

    public function read(){
        return file_get_contents($this->bookPath);
    }
}
$tom=new authorControl();//新建一个留言者相关的控制器
$tom->setName('tom');
$pen=new leaveModel();//拿出笔
$book=new gbookModel();//翻出笔记本
$book->setBookPath("a.txt");
$tom->message($pen, $book, "i love you");//用笔在笔记本上留言
echo $tom->view($book);
?>
